* timer.c (main): Set the ownership of the stdin file descriptor
authorJim Blandy <jimb@redhat.com>
Thu, 11 Mar 1993 07:00:12 +0000 (07:00 +0000)
committerJim Blandy <jimb@redhat.com>
Thu, 11 Mar 1993 07:00:12 +0000 (07:00 +0000)
to the current process.  Print error messages if either of the
fcntl's fails.

* timer.c (sigcatch): Declare this to return SIGTYPE (defined in
../src/config.h), not void.

lib-src/timer.c

index 51642813fe3dad0aa148a531eced6efef8bf7350..84c384c9f226a32b2ad913b44e1058c5fd00ddde 100644 (file)
@@ -213,7 +213,7 @@ getevent ()
   notify ();
 }
 
-void
+SIGTYPE
 sigcatch (sig)
      int sig;
 /* dispatch on incoming signal, then restore it */
@@ -262,7 +262,18 @@ main (argc, argv)
   signal (SIGTERM, sigcatch);
 
 #ifndef USG
-  fcntl (0, F_SETFL, FASYNC);
+  if (fcntl (0, F_SETOWN, getpid ()) == -1)
+    {
+      fprintf (stderr, "%s: can't set ownership of stdin\n", pname);
+      fprintf (stderr, "%s\n", sys_errlist[errno]);
+      exit (1);
+    }
+  if (fcntl (0, F_SETFL, fcntl (0, F_GETFL, 0) | FASYNC) == -1)
+    {
+      fprintf (stderr, "%s: can't request asynchronous I/O on stdin\n", pname);
+      fprintf (stderr, "%s\n", sys_errlist[errno]);
+      exit (1);
+    }
 #endif /* USG */
 
   while (1) pause ();